void getRecoilOffset(unsigned int uSeed, int iFuture, float *fInAngles, float *fVelocity, float *fOutAngles)
{
   gEngfuncs.pfnAngleVectors(fInAngles, fForward, fRight, fUp);

   fSpread[0] = (UTIL_SharedRandomFloat(uSeed + iFuture, -0.5, 0.5)
      + UTIL_SharedRandomFloat(uSeed + 1 + iFuture, -0.5, 0.5))
      * getVecSpread(sqrtf(fVelocity[0] * fVelocity[0] + fVelocity[1] * fVelocity[1]));

   fSpread[1] = (UTIL_SharedRandomFloat(uSeed + 2 + iFuture, -0.5, 0.5)
      + UTIL_SharedRandomFloat(uSeed + 3 + iFuture, -0.5, 0.5))
      * getVecSpread(sqrtf(fVelocity[0] * fVelocity[0] + fVelocity[1] * fVelocity[1]));

   fView[0] = (8192.0f * (fForward[0] + fSpread[0] * fRight[0] + fSpread[1] * fUp[0]));
   fView[1] = (8192.0f * (fForward[1] + fSpread[0] * fRight[1] + fSpread[1] * fUp[1]));
   fView[2] = (8192.0f * (fForward[2] + fSpread[0] * fRight[2] + fSpread[1] * fUp[2]));
   
   vectorAngles(fView, fDest);

   fDest[0] *= -1;

   fOutAngles[0] = fInAngles[0] - fDest[0];
   fOutAngles[1] = fInAngles[1] - fDest[1];
   fOutAngles[2] = 0.0f;
}